Most computer applications provide a menu-driven user interface through which users can specify functions of the applications that are to be performed. The menus of these applications are typically defined as a hierarchy of menu items and, for each menu item, multiple menu sub-items. Each menu sub-item may also have menu sub-items. Thus, a menu hierarchy can be many levels deep. For example, a word processing program may provide a menu hierarchy that has at its highest level the menu items of file, edit, view, and insert. The next level for the file menu item may include the menu sub-items of new, open, and close, and the next level for the edit menu item may include the menu sub-items of cut, copy, and paste.
Applications typically display their highest level menu items in the menu bar at the top of the application window. To select a menu item, a user moves a pointer, such as a mouse pointer, to a menu item and selects the menu item. If the selected menu item has menu sub-items, then the application displays the menu sub-items in a drop-down list below the selected menu item. If a user selects a menu sub-item that itself has menu sub-items, then the application may display a drop-down list to the right of the selected menu sub-item. If a selected menu item has no menu sub-items, then it is a leaf menu item within the menu hierarchy and it represents a function to be performed by the application.
Applications may also use pop-up windows to display menu items near application content to which the menu items pertain. For example, a word processing program may display a pop-up window of paragraph formatting menu items near a paragraph that is to be reformatted. If a menu item within a pop-up window with menu sub-items is selected, then the application may display the menu sub-items in a drop-down list to the right of the selected menu item.
A difficulty with traditional menu bar techniques for selection of menu items within a menu hierarchy is that they force a user to move the focus of their attention from the content of the application to the menu bar. Because the user moves their focus, the user may not easily remember their prior focus after selection of the menu items. For example, a user who wants to periodically save an updated version of a word processing document may stop their editing of the document to select a file/save menu item. After the document is saved, the user may not precisely remember their train of thought in editing the document. In addition, because menu bars are typically an edge of the application window, users can find the repetitive strain of moving from content to the edge of the window tiring. Traditional menu bars also take up valuable window space that could otherwise be used to display application content. Although use of pop-up windows helps with some of these difficulties, a user can, as with a menu bar, find it difficult to navigate and precisely select menu items and menu sub-items. Each menu item in a drop-down list is displayed in a small area. It can be difficult for a user to position a mouse pointer over that area of a desired menu item and then select a menu sub-item that is displayed in a drop-down list without inadvertently selecting an undesired menu item and having its drop-down list display.